home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
scope
/
101-125
/
scopedisk122
/
popup
/
source
/
startup.a
< prev
next >
Wrap
Text File
|
1995-03-19
|
3KB
|
124 lines
INCLUDE "exec/types.i"
INCLUDE "libraries/dos.i"
INCLUDE "libraries/dosextens.i"
INCLUDE "exec/execbase.i"
INCLUDE "exec/funcdef.i"
INCLUDE "exec/exec_lib.i"
INCLUDE "libraries/dos_lib.i"
AbsExecBase EQU 4
POPUPPRI EQU 5
POPUPSTACK EQU 2000
* Must use Kickstart 1.2 or higher
LIBVERSION EQU 33
xref _LinkerDB
xref @InitPopUpMenu
xref _PopUpTaskName
section Startup,code
Startup MOVEM.L D2-D4/A2-A4/A6,-(A7)
LEA _LinkerDB,A4
* ------------ Open dos.
LEA DosName(PC),A1
MOVEQ.L #LIBVERSION,D0
MOVEA.L AbsExecBase.W,A6
JSR _LVOOpenLibrary(A6)
MOVE.L D0,_DOSBase(A4)
TST.L D0
BEQ.W NoDos
* ------------ Get pointer to our Process.
MOVEA.L ThisTask(A6),A3
* ------------ Run from Workbench ?
TST.L pr_CLI(A3)
BEQ.B FromWorkbench
* ------------ Get address to this segment.
LEA Startup-4(PC),A2
* ------------ Get address to PopUpMenu code segment.
MOVE.L #@InitPopUpMenu-4,D3
* ------------ Convert to BCPL.
ASR.L #2,D3
* ------------ Find current output window.
MOVE.L #CurrWindow,D1
MOVE.L #MODE_OLDFILE,D2
MOVEA.L _DOSBase(A4),A6
JSR _LVOOpen(A6)
MOVE.L D0,_StdOut(A4)
TST.L D0
BEQ.B NoStdOut
* ------------ Save start of segments.
MOVE.L (A2),_PopUpSeg(A4)
* ------------ Remove this segment.
CLR.L (A2)
* ------------ Create PopUpMenu process.
MOVE.L _PopUpTaskName,D1
MOVEQ #POPUPPRI,D2
MOVE.L #POPUPSTACK,D4
JSR _LVOCreateProc(A6)
BRA.B Done
* ------------ Wait for Workbench startup-message.
FromWorkbench LEA pr_MsgPort(A3),A0
JSR _LVOWaitPort(A6)
LEA pr_MsgPort(A3),A0
JSR _LVOGetMsg(A6)
MOVE.L D0,D3
* ------------ Open window on Workbench screen.
MOVE.L #WbWindow,D1
MOVE.L #MODE_NEWFILE,D2
MOVEA.L _DOSBase(A4),A6
JSR _LVOOpen(A6)
MOVE.L D0,_StdOut(A4)
MOVEA.L AbsExecBase.W,A6
TST.L D0
BEQ.B NoWbStdOut
* ------------ No need to unload segments (Workbench takes care of that).
CLR.L _PopUpSeg(A4)
* ------------ Set task priority.
MOVEA.L A3,A1
MOVEQ #POPUPPRI,D0
JSR _LVOSetTaskPri(A6)
* ------------ Start PopUpMenu-program.
JSR @InitPopUpMenu
* ------------ Forbid so Workbench can't unload us before we are done.
NoWbStdOut JSR _LVOForbid(A6)
MOVEA.L D3,A1
JSR _LVOReplyMsg(A6)
Done
NoStdOut
NoDos MOVEQ #00,D0
MOVEM.L (A7)+,D2-D4/A2-A4/A6
RTS
* Put these data in our code-segment.
CurrWindow dc.b '*',0
DosName dc.b 'dos.library',0
WbWindow dc.b 'CON:100/75/400/45/PopUpMenu',0
section __MERGED,bss
xref _DOSBase
xref _StdOut
xref _PopUpSeg
END